<?php 
class venda_funcionarioModel extends Model{
    public $tabela = "venda_funcionario";
    public $pkey   = 'venda_funcionario_cod';
    public $dados  = array(
         'venda_funcionario_cod' => array(
	    'name'     => 'Código',
	    'type'     => 'int',
	    'size'     => '11',
	    'pkey'    => true,
	    'ai'      => true,
	    'grid'    => true,
	    'display' => true,
	    'private' => true
        ),
         'venda_funcionario_nome' => array(
	    'name'     => 'Nome',
	    'type'     => 'varchar',
	    'size'     => '64',
            'title'   => true,
	    'grid'    => true,
	    'display' => true,
        ),
         'venda_funcionario_cargo' => array(
	    'name'     => 'Cargo',
	    'type'     => 'varchar',
            'subtitle' => true,
	    'size'     => '32',
	    'grid'    => true,
	    'display' => true,
        ),
        
        'venda_funcionario_email' => array(
	    'name'     => 'Email Principal',
	    'type'     => 'varchar',
	    'size'     => '32',
            'especial' => 'email',
	    'notnull' => true,
	    //'unique'  => array('model' => 'pessoal/email'),
	    'grid'    => true,
	    'display' => true,
        ),
        
        'venda_funcionario_email2' => array(
	    'name'     => 'Email Alternativo',
	    'type'     => 'varchar',
	    'size'     => '32',
            'especial' => 'email',
            'hidelabel' => true,
        ),
        
        'pessoal_telefone_numero' => array(
	    'name'     => 'Número Principal',
	    'type'     => 'varchar',
	    'size'     => '14',
            'notnull'  => true,
            'especial' => 'telefone',
	    'grid'    => true,
	    'display' => true,
        ),
        
        'pessoal_telefone_numero2' => array(
	    'name'     => 'Número Alternativo',
	    'type'     => 'varchar',
	    'size'     => '14',
            'especial' => 'telefone',
        ),
        
        
        'pessoal_social_facebook' => array(
	    'name'     => 'Facebook',
	    'type'     => 'varchar',
	    'size'     => '128',
	    'grid'    => true,
	    //'display' => true,
        ),
        
        'pessoal_social_twitter' => array(
	    'name'     => 'Twitter',
	    'type'     => 'varchar',
	    'size'     => '128',
	    'grid'    => true,
	    //'display' => true,
        ),
        
        'pessoal_social_linkedin' => array(
	    'name'     => 'Linkedin',
	    'type'     => 'varchar',
	    'size'     => '128',
	    'grid'    => true,
	    //'display' => true,
        ),
        
         'venda_empresa_cod' => array(
	    'name'     => 'Empresa',
	    'type'     => 'int',
	    'size'     => '11',
	    'grid'    => true,
	    'display' => true,
	    'especial' => 'session',
	    'session'  => 'venda/empresa',
	    'fkey' => array(
	        'model' => 'venda/empresa',
	        'cardinalidade' => '1n',
	        'keys' => array('venda_empresa_cod', 'venda_empresa_nome'),
	    ),
        ),
         'venda_funcionario_criadoem' => array(
	    'name'     => 'Criadoem',
	    'type'     => 'timestamp',
            'private' => true,
	    'notnull' => true,
	    'grid'    => true,
	    'display' => true,
        ),
//         'venda_funcionario_excluido' => array(
//	    'name'     => 'Excluido',
//	    'type'     => 'datetime',
//	    'private' => true,
//	    'grid'    => true,
//	    'display' => true,
//        ),
         'venda_funcionario_decisor' => array(
	    'name'     => 'Decisor',
	    'type'     => 'bit',
	    'default' => '1',
	    'grid'    => true,
	    'display' => true,
        ),
        
        'cod_usuario' => array(
	    'name'     => 'Quem cadastrou',
	    'type'     => 'int',
	    'size'     => '11',
	    'pkey'    => true,
	    'grid'    => true,
            'especial' => 'autentication',
            'autentication' => array(
                'needlogin' => true
            ),
	    'display' => true,
	    'fkey' => array(
	        'model' => 'usuario/login',
	        'cardinalidade' => '1n',
	        'keys' => array('cod_usuario', 'user_name', 'user_cargo'),
	    ),
        ),
        
        'venda_funcionario_status' => array(
	    'name'     => 'Status',
	    'type'     => 'enum',
	    'default' => 'saved',
	    'options' => array(
	    	'saved'   => 'Salvo',
	    	'unsaved' => 'Não salvo',
	    ),
            'private' => true,
	    'notnull' => true,
        ),
        
        'venda_funcionario_visita' => array(
            'name'          => 'Visitas recebidas por este Funcionário',
            //'private'       => true,    
            'especial'      => 'hide',
            'display'       => true,
            'display_in'    => 'table',
            'fkey'      => array(
                'sort'          => 'venda_visita_criado DESC',
                'limit'         => 10,
                'model' 	=> 'venda/visita',
                'keys'          => array('venda_visita_cod', 'venda_visita_criado'),
                'cardinalidade' => 'n1'//nn 1n 11
            )
         ),
        
	'button'     => array('button' => 'Gravar Funcionario'),
    );
    
    public function getEmailPrincipal($cod_funcionario){
        $var = $this->selecionar(array('venda_funcionario_email'), "venda_funcionario_cod = '$cod_funcionario'");
        if(empty($var)) return "";
        $var = array_shift($var);
        return $var['venda_funcionario_email'];
    }
    
    public function getName($cod_funcionario){
        $var = $this->selecionar(array('venda_funcionario_nome'), "venda_funcionario_cod = '$cod_funcionario'");
        if(empty($var)) return "";
        $var = array_shift($var);
        return $var['venda_funcionario_nome'];
    }
    
    public function HasDecisor($cod_empresa){
        $decidor = $this->getCount("
            venda_empresa_cod='$cod_empresa' AND
            venda_funcionario_decisor=1 AND 
            venda_funcionario_status != 'unsaved'"
        );
        return ($decidor != 0);
    }
    
    public function getOneEmployeeFromCompany($cod_empresa){
        $var = $this->selecionar(array($this->pkey), "venda_empresa_cod = '$cod_empresa'", "1");
        if(empty($var)) return '';
        
        $v = array_shift($var);
        return $v[$this->pkey];
    }

    public function createEmpty($cod_empresa){
        $cod_usuario                       = usuario_loginModel::CodUsuario();
        $dados['venda_funcionario_nome']   = 'Novo Funcionário';
        $dados['cod_usuario']              = $cod_usuario;
        $dados['venda_empresa_cod']        = $cod_empresa;
        $dados['venda_funcionario_status'] = 'unsaved';
        
        $wh = "venda_funcionario_nome = 'Novo Funcionário' AND cod_usuario = '$cod_usuario' AND venda_funcionario_status = 'unsaved'";
        $var = $this->selecionar(array('venda_funcionario_cod'), $wh);
        if(empty($var)){
            if(!$this->inserir($dados)) return false;
            return $this->getLastId();
        }
        $var = array_shift($var);
        return $var['venda_funcionario_cod'];
    }
    
    public function editar($id, $post, $camp = "") {
        $post['venda_funcionario_status'] = 'saved';
        $old = $this->getItem($id);
        if(!parent::editar($id, $post, $camp)) return false;
        if(empty($old)) return true;
        
        $msg = $this->genLogMessage($post, $old, $id);
        $this->saveLog($msg);
        return true;
    }
    
    
    /*
     * Responsável por gerar a mensagem de log
     */
    private function genLogMessage($post, $old, $id){
        if(isset($post['venda_funcionario_status'] )) unset($post['venda_funcionario_status'] ) ;
        if(isset($post['cod_usuario']))               unset($post['cod_usuario']) ;
        if(isset($post['venda_empresa_cod']))         unset($post['venda_empresa_cod']) ;
        
        $msg = "";
        foreach($post as $name => $arr){
            if(!array_key_exists($name, $this->dados)) continue;
            if(is_array($arr)) continue;
            if($old[$name] == $arr) continue;
            $title = $this->dados[$name]['name'];
            $msg .= "<b>$title</b>: $arr <br/>";
        }
        
        if($msg == "") return "";
        $this->LoadResource('html', 'html');
        $link = $this->html->getLink("venda/funcionario/show/$id");
        $veja = "<a href='$link'>veja mais</a>";
        return ($old['venda_funcionario_status'] != "saved")? 
                "Novo funcionário Adicionado: <br/> $msg $veja":
                "Modificações no funcionário:<br/> $msg $veja";
    }
    
    private function saveLog($msg){
        if($msg == "") return;
        $this->LoadModel('venda/empresalog', 'elog');
        if(!$this->elog->Log($msg))
            $this->setAlertMessage($this->elog->getErrorMessage());
    }
    
    public function apagar($valor, $chave = "") {
        $old = $this->getItem($valor, $chave);
        if(!parent::apagar($valor, $chave)) return false;
        
        $this->saveLog("Funcionário ".$old['venda_funcionario_nome'] . " removido");
        return true;
    }
    
    public function getFuncionarioByEmpresa($cod_empresa){
        return $this->selecionar(array('venda_funcionario_cod', 'venda_funcionario_nome'), "venda_empresa_cod = '$cod_empresa'");
    }
}
?>